实训三     队列的操作                                                         

一、实训目的


1.  掌握队列的思想及其存储实现。

2. 掌握队列的常见算法的程序实现。


二、考核办法


必做题部分全做得3分,选做题部分满分2分,至少选一题。

 

三、实训内容


1.必做内容:(满分3分)

1.采用链式存储实现队列的初始化、入队、出队操作。


2.结构体部分代码:
typedef struct node
{
int data;
struct node *next;
}QNode;链队列节点定义
typedef struct
{
QNode *front,*rear;
}LQueue;//队列的定义
LQueue *Init_LQueue()
{
LQueue *q;
QNode  *p;
q=malloc(sizeof(LQueue));
p=malloc(sizeof(QNode));
p->next=NULL;
q->front=p;
q->rear=p;
return q;
}//初始化队列
函数(a):
void In_LQueue(LQueue *q,int x)//入队操作
{…}
函数(b):
int Out_LQueue(LQueue *q,int x)//出队列操作
{…}


3.要求:(1)完成函数(a),函数(b)中的算法;
(2)编写 main()函数,并调用上述两个函数,输出结果。输入1,2,3,4,5,完成入队操作并显示在屏幕上.
(3)调用函数(b)将队列中元素出队,并输出到屏幕上
结果如图:

2. 选做内容:(满分2分)

 

1. 采用顺序存储实现队列的初始化、入栈、出栈操作。


2. 假设以数组sequ[0..m-1]存放循环队列的元素,同时设变量rear和qurlrn分别指示循环队列尾元素的位置和内含元素的个数,试写出循环队列的队满条件,并设计相应入队列和出队列的算法。




朱丹,电话:0412-8413220